Modern computer systems have the capability of utilizing a number of resources that must be able to communicate with each other over a data path. A bus is provided so that a number of system resources can transfer data among themselves. Typical resources included in a computer system are processors, memory devices, and input/output (I/0) devices. I/0 devices are usually the means used in computer systems to interface the elements in the system with sources and destinations outside the computer system.
An interrupt is the means by which an I/0 device draws the attention of the system so that the system can attend to the needs of the I/0 device. In many conventional systems, an I/0 device generates a special "interrupt request" signal which is sent by way of dedicated control lines.
Alternatively, in a message-based interrupt scheme, an I/0 device sends interrupt request messages to the system over the system bus. Thus, in message-based systems, no separate and distinct status and control lines are needed. The rules for creation and interpretation of messages, such as interrupt request messages, are referred to as the "protocol."
According to some protocols for servicing an interrupt request, the resource servicing the interrupt will solicit additional information from the I/0 device. One way to obtain such additional information is to provide an interrupt acknowledge message. in response to the interrupt acknowledge, the I/0 device returns an interrupt vector containing information particular to the requested interrupt. The interrupt vector, for example, can provide information about the starting address of a routine to service the interrupting I/0 device.
In any system in which several I/0 devices transmit interrupt requests, or in which one I/0 device transmits several interrupt request, some method must be provided for arbitrating among the request. For example, either the interrupting devices or the individual interrupt requests can be assigned interrupt priorities which the system can use to aid arbitration.
The concept and some of the benefits of utilizing a "pended" bus are described below in the System Overview section. Ideally, to gain the advantages of both message-based interrupt schemes and pended buses, it would be desirable to combine these two approaches. That combination, however, is difficult to achieve for several reasons. One source of difficulty is that, when using a pended bus, there is a need for additional information for routing messages between the interrupting node and the interrupt servicing node. Furthermore, the parallel activity in a pended bus, which is inherent because interrupt requests and the servicing of those request occur simultaneously and asychronously, makes it difficult of establish coherent or up-to-date status information on pending interrupt requests.
Adding to these problems is the complexity involved in maintaining interrupt pending status information for all the interrupting nodes at all the different priority levels. This is less difficult if dedicated control wires are used since status could be determined by examination of those wires. However, as the number of processors and other nodes on a bus increases, the number of dedicated control lines must increase, rendering the use of a dedicated control line system impractical for large multiprocessor systems.
The use of a message-based interrupt system, however, while eliminating this problem, creates other problems in maintaining pending status information. For example, in a message-based system using a pended bus, it is possible that an interrupting node may specify several interrupt servicing nodes. This introduces an additional level of difficulty in finding a solution to the problem of preventing several interrupt servicing nodes from servicing the same request. Thus, a message-based interrupt scheme on a pended bus requires some mechanism so that interrupt servicing nodes can detect actions taken by other interrupt servicing nodes.
A related problem, when messages are used to provide interrupt requests, is how an interrupt servicing node can differentiate between outstanding interrupt requests from different interrupting nodes. Otherwise, there would be contention among several interrupting nodes when an interrupt acknowledge message, is sent, and the losing interrupting nodes would be forced to reissue their interrupt requests.
Accordingly, it is an object of the present invention to provide a message-based interrupt scheme on a pended bus.
It is a further object of the invention to support distributed interrupt servicing in a multiprocessor system on a pended bus, and to provide, simultaneously with distributed interrupt servicing, direct interrupt servicing between a particular interrupting node and a particular interrupt servicing node.
It is another object of the present invention to provide a message-based interrupt scheme which functions with a pended bus interfacing multiple interrupting devices.
It is an additional object of the invention to maintain up-to-date status information on interrupt requests and to send only a single interrupt acknowledge message in response to each request.
It is a still further object of the invention to eliminate the need for interrupting devices to reissue interrupt requests for a single interrupting event.
Additional objects and advantages of the invention will be set forth in part in the description which follows, and in part will be obvious from the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The objects and advantages of the invention may be realized and attained by means of the instrumentalities and combinations particularly pointed out in the appended claims.